

 class FileSplitter
{
	string m_filePath;
	int m_fileNumber;

	ProgressBar* m_progressBar;//FileSplitter上层的类依赖了下层具体的类
	//虽然根据设计模式的思想我们应该去找该子模块的抽象类（父类），
	//在使用时再具体去实例化对应的所需的子类。
	//但是由于该模块扮演的角色是通知，所以完全可以将其完全脱离出去，而不是采用组合其抽象类的强耦合的方法

public:
	FileSplitter(const string& filePath, int fileNumber, ProgressBar* progressBar) :
		m_filePath(filePath), 
		m_fileNumber(fileNumber),
		m_progressBar(progressBar){

	}

	void split(){

		//1.读取大文件

		//2.分批次向小文件中写入
		for (int i = 0; i < m_fileNumber; i++){
			//...
			float progressValue = m_fileNumber;
			progressValue = (i + 1) / progressValue;
			m_progressBar->setValue(progressValue);
		}

	}
};